{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## RUL prediction using boosting\n",
    "\n",
    "In this notebook, we will apply boosting to predict RUL of NASA's turbofan engine dataset FD001. To implement boosting, we will use [XGBoost](https://xgboost.readthedocs.io/en/latest/index.html) library."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import xgboost as xgb\n",
    "\n",
    "from sklearn.metrics import mean_squared_error\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "np.random.seed(324)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Numpy version:  1.18.5\n",
      "Pandas version:  1.0.5\n",
      "XGBoost version:  1.2.0\n"
     ]
    }
   ],
   "source": [
    "print(\"Numpy version: \", np.__version__)\n",
    "print(\"Pandas version: \", pd.__version__)\n",
    "print(\"XGBoost version: \", xgb.__version__)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Data Preprocessing\n",
    "\n",
    "We strongly encourage readers to go through the [dataset description and prreprocessing notebook](https://github.com/biswajitsahoo1111/rul_codes_open/blob/master/notebooks/cmapss_notebooks/CMAPSS_data_description_and_preprocessing.ipynb). In that notebook we have explained how data preprocessing functions work with simple examples. In this notebook we will only use those functions. So prior familiarity with these functions is an advantage. Below are the parameters that we will use for data preprocessing:\n",
    "\n",
    "* Degradation model: Piecewise linear\n",
    "* Early RUL: 125\n",
    "* Window length: 1\n",
    "* Shift: 1\n",
    "* Data scaling: No (Tree based methods don't require data scaling)\n",
    "\n",
    "We will calculate two prediction scores on test data. In one case, we will take last 5 examples of test data for engine, calculate their predictions, and finally average those for each engine. In the second case, we will take only the last example of each engine and make predictions. The logic behind taking last 5 examples and averaging their predictions is to make the prediction robust against outliers. Due to some external factor, if our last example happens to be corrupted, its prediction outcome might be far off from the actual one. But if we average predictions from last 5 examples, we will get a more conservative estimate. \n",
    "\n",
    "In the following cell we will show boxplots of each column of training data. That will give us an idea about the values in different columns. If all the values in a column are constant, we drop those columns from our analysis.\n",
    "\n",
    "Readers can download the data from [here](https://ti.arc.nasa.gov/tech/dash/groups/pcoe/prognostic-data-repository/#turbofan). In the following cells, wherever data are read from a folder, readers should change the string to point to the respective folder from their system to run this notebook seamlessly. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1152x1512 with 21 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "train_data = pd.read_csv(\"/home/biswajit/data/cmapss_data/train_FD001.txt\", sep= \"\\s+\", header = None)\n",
    "plt.figure(figsize = (16, 21))\n",
    "for i in range(21):\n",
    "    temp_data = train_data.iloc[:,i+5]\n",
    "    plt.subplot(7,3,i+1)\n",
    "    plt.boxplot(temp_data)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "def process_targets(data_length, early_rul = None):\n",
    "    \"\"\" \n",
    "    Takes datalength and earlyrul as input and \n",
    "    creates target rul.\n",
    "    \"\"\"\n",
    "    if early_rul == None:\n",
    "        return np.arange(data_length-1, -1, -1)\n",
    "    else:\n",
    "        early_rul_duration = data_length - early_rul\n",
    "        if early_rul_duration <= 0:\n",
    "            return np.arange(data_length-1, -1, -1)\n",
    "        else:\n",
    "            return np.append(early_rul*np.ones(shape = (early_rul_duration,)), np.arange(early_rul-1, -1, -1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "def process_input_data_with_targets(input_data, target_data = None, window_length = 1, shift = 1):\n",
    "    \"\"\"Depending on values of window_length and shift, this function generates batchs of data and targets \n",
    "    from input_data and target_data.\n",
    "    \n",
    "    Number of batches = np.floor((len(input_data) - window_length)/shift) + 1\n",
    "    \n",
    "    **We don't check input dimensions uisng exception handling. So readers should be careful while using these\n",
    "    functions. If input data are not of desired dimension, either error occurs or something undesirable is \n",
    "    produced as output.**\n",
    "    \n",
    "    Arguments:\n",
    "        input_data: input data to function (Must be 2 dimensional)\n",
    "        target_data: input rul values (Must be 1D array)s\n",
    "        window_length: window length of data\n",
    "        shift: Distance by which the window moves for next batch. This is closely related to overlap\n",
    "               between data. For example, if window length is 30 and shift is 1, there is an overlap of \n",
    "               29 data points between two consecutive batches.\n",
    "        \n",
    "    \"\"\"\n",
    "    num_batches = np.int(np.floor((len(input_data) - window_length)/shift)) + 1\n",
    "    num_features = input_data.shape[1]\n",
    "    output_data = np.repeat(np.nan, repeats = num_batches * window_length * num_features).reshape(num_batches, window_length,\n",
    "                                                                                                  num_features)\n",
    "    if target_data is None:\n",
    "        for batch in range(num_batches):\n",
    "            output_data[batch,:,:] = input_data[(0+shift*batch):(0+shift*batch+window_length),:]\n",
    "        return output_data\n",
    "    else:\n",
    "        output_targets = np.repeat(np.nan, repeats = num_batches)\n",
    "        for batch in range(num_batches):\n",
    "            output_data[batch,:,:] = input_data[(0+shift*batch):(0+shift*batch+window_length),:]\n",
    "            output_targets[batch] = target_data[(shift*batch + (window_length-1))]\n",
    "        return output_data, output_targets"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def process_test_data(test_data_for_an_engine, window_length, shift, num_test_windows = 1):\n",
    "    \"\"\" This function takes test data for an engine as first input. The next two inputs\n",
    "    window_length and shift are same as other functins. \n",
    "    \n",
    "    Finally it takes num_test_windows as the last input. num_test_windows sets how many examplles we\n",
    "    want from test data (from last). By default it extracts only the last example.\n",
    "    \n",
    "    The function return last examples and number of last examples (a scaler) as output. \n",
    "    We need the second output later. If we are extracting more than 1 last examples, we have to \n",
    "    average their prediction results. The second scaler halps us do just that.\n",
    "    \"\"\"\n",
    "    max_num_test_batches = np.int(np.floor((len(test_data_for_an_engine) - window_length)/shift)) + 1\n",
    "    if max_num_test_batches < num_test_windows:\n",
    "        required_len = (max_num_test_batches -1)* shift + window_length\n",
    "        batched_test_data_for_an_engine = process_input_data_with_targets(test_data_for_an_engine[-required_len:, :],\n",
    "                                                                          target_data = None,\n",
    "                                                                          window_length = window_length, shift = shift)\n",
    "        return batched_test_data_for_an_engine, max_num_test_batches\n",
    "    else:\n",
    "        required_len = (num_test_windows - 1) * shift + window_length\n",
    "        batched_test_data_for_an_engine = process_input_data_with_targets(test_data_for_an_engine[-required_len:, :],\n",
    "                                                                          target_data = None,\n",
    "                                                                          window_length = window_length, shift = shift)\n",
    "        return batched_test_data_for_an_engine, num_test_windows"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processed trianing data shape:  (20631, 1, 14)\n",
      "Processed training ruls shape:  (20631,)\n",
      "Processed test data shape:  (500, 1, 14)\n",
      "True RUL shape:  (100,)\n"
     ]
    }
   ],
   "source": [
    "test_data = pd.read_csv(\"/home/biswajit/data/cmapss_data/test_FD001.txt\", sep = \"\\s+\", header = None)\n",
    "true_rul = pd.read_csv('/home/biswajit/data/cmapss_data/RUL_FD001.txt', sep = '\\s+', header = None)\n",
    "\n",
    "window_length = 1\n",
    "shift = 1\n",
    "early_rul = 125            \n",
    "processed_train_data = []\n",
    "processed_train_targets = []\n",
    "\n",
    "# How many test windows to take for each engine. If set to 1 (this is the default), only last window of test data for \n",
    "# each engine are taken. If set to a different number, that many windows from last are taken. \n",
    "# Final output is the average of output of all windows.\n",
    "num_test_windows = 5     \n",
    "processed_test_data = []\n",
    "num_test_windows_list = []\n",
    "\n",
    "columns_to_be_dropped = [0,1,2,3,4,5,9,10,14,20,22,23]\n",
    "\n",
    "num_machines = np.min([len(train_data[0].unique()), len(test_data[0].unique())])\n",
    "\n",
    "for i in np.arange(1, num_machines + 1):\n",
    "    \n",
    "    temp_train_data = train_data[train_data[0] == i].drop(columns=columns_to_be_dropped).values\n",
    "    temp_test_data = test_data[test_data[0] == i].drop(columns=columns_to_be_dropped).values\n",
    "    \n",
    "    # Verify if data of given window length can be extracted from both training and test data\n",
    "    if (len(temp_test_data) < window_length):\n",
    "        print(\"Test engine {} doesn't have enough data for window_length of {}\".format(i, window_length))\n",
    "        raise AssertionError(\"Window length is larger than number of data points for some engines. \"\n",
    "                             \"Try decreasing window length.\")\n",
    "    elif (len(temp_train_data) < window_length):\n",
    "        print(\"Train engine {} doesn't have enough data for window_length of {}\".format(i, window_length))\n",
    "        raise AssertionError(\"Window length is larger than number of data points for some engines. \"\n",
    "                             \"Try decreasing window length.\")\n",
    "    \n",
    "    temp_train_targets = process_targets(data_length = temp_train_data.shape[0], early_rul = early_rul)\n",
    "    data_for_a_machine, targets_for_a_machine = process_input_data_with_targets(temp_train_data, temp_train_targets, \n",
    "                                                                                window_length = window_length, shift = shift)\n",
    "    \n",
    "    # Prepare test data\n",
    "    test_data_for_an_engine, num_windows = process_test_data(temp_test_data, window_length = window_length, shift = shift,\n",
    "                                                             num_test_windows = num_test_windows)\n",
    "    \n",
    "    processed_train_data.append(data_for_a_machine)\n",
    "    processed_train_targets.append(targets_for_a_machine)\n",
    "    \n",
    "    processed_test_data.append(test_data_for_an_engine)\n",
    "    num_test_windows_list.append(num_windows)\n",
    "\n",
    "processed_train_data = np.concatenate(processed_train_data)\n",
    "processed_train_targets = np.concatenate(processed_train_targets)\n",
    "processed_test_data = np.concatenate(processed_test_data)\n",
    "true_rul = true_rul[0].values\n",
    "\n",
    "# Shuffle data\n",
    "index = np.random.permutation(len(processed_train_targets))\n",
    "processed_train_data, processed_train_targets = processed_train_data[index], processed_train_targets[index]\n",
    "\n",
    "print(\"Processed trianing data shape: \", processed_train_data.shape)\n",
    "print(\"Processed training ruls shape: \", processed_train_targets.shape)\n",
    "print(\"Processed test data shape: \", processed_test_data.shape)\n",
    "print(\"True RUL shape: \", true_rul.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processed train data shape:  (20631, 14)\n",
      "Processed test data shape:  (500, 14)\n"
     ]
    }
   ],
   "source": [
    "processed_train_data = processed_train_data.reshape(-1, processed_train_data.shape[2])\n",
    "processed_test_data = processed_test_data.reshape(-1, processed_test_data.shape[2])\n",
    "print(\"Processed train data shape: \", processed_train_data.shape)\n",
    "print(\"Processed test data shape: \", processed_test_data.shape)\n",
    "\n",
    "dtrain = xgb.DMatrix(processed_train_data, label = processed_train_targets)\n",
    "dtest = xgb.DMatrix(processed_test_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0]\tTrain-rmse:22.90208\n",
      "[50]\tTrain-rmse:17.57499\n",
      "[100]\tTrain-rmse:16.59436\n",
      "[150]\tTrain-rmse:15.71674\n",
      "[200]\tTrain-rmse:15.08524\n",
      "[250]\tTrain-rmse:14.40499\n",
      "[299]\tTrain-rmse:13.84825\n"
     ]
    }
   ],
   "source": [
    "num_rounds = 300\n",
    "params = {\"max_depth\":3, \"learning_rate\":1, \"objective\":\"reg:squarederror\"}\n",
    "bst = xgb.train(params, dtrain, num_boost_round = num_rounds, evals = [(dtrain, \"Train\")], verbose_eval = 50)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE:  19.783624156603416\n"
     ]
    }
   ],
   "source": [
    "rul_pred = bst.predict(dtest)\n",
    "\n",
    "# First split predictions according to number of windows of each engine\n",
    "preds_for_each_engine = np.split(rul_pred, np.cumsum(num_test_windows_list)[:-1])\n",
    "mean_pred_for_each_engine = [np.average(ruls_for_each_engine, weights = np.repeat(1/num_windows, num_windows)) \n",
    "                             for ruls_for_each_engine, num_windows in zip(preds_for_each_engine, num_test_windows_list)]\n",
    "RMSE = np.sqrt(mean_squared_error(true_rul, mean_pred_for_each_engine))\n",
    "print(\"RMSE: \", RMSE)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "With somewhat arbitrary choice of hyperparameters, we obtained an RMSE value of 19.78. But can we do better? To find out better values of hyperparameters, we can do a principled hyperparameter tuning. There are different ways to do hyperparameter search. Here, we will use simple grid search. \n",
    "\n",
    "In grid search, we first define a grid of parameters. Then for each set of parameters, we will fit a 10 xgboost models (as it is 10 fold cross validation). Finally we will average the result of all folds for a particular parameter choice. The parameter choice that gives best score for cross validation is chosen as the best hyperparameter.\n",
    "\n",
    "Grid search of hyperparameters (with cross validation) is computationally intensive. It might take a long time on a personal computer. If that is the case, readers are advised to comment the next cell and directly use the best hyperparameter values as done in subsequent cells."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "max_depth: 2, eta: 0.01\n",
      "RMSE: 20.232419899999996 in 300 rounds\n",
      "\n",
      "max_depth: 2, eta: 0.1\n",
      "RMSE: 18.2573667 in 299 rounds\n",
      "\n",
      "max_depth: 2, eta: 0.3\n",
      "RMSE: 18.345480199999997 in 198 rounds\n",
      "\n",
      "max_depth: 2, eta: 0.5\n",
      "RMSE: 18.385709900000002 in 114 rounds\n",
      "\n",
      "max_depth: 2, eta: 1.0\n",
      "RMSE: 18.9066216 in 82 rounds\n",
      "\n",
      "max_depth: 3, eta: 0.01\n",
      "RMSE: 19.379812800000003 in 300 rounds\n",
      "\n",
      "max_depth: 3, eta: 0.1\n",
      "RMSE: 18.182862500000002 in 183 rounds\n",
      "\n",
      "max_depth: 3, eta: 0.3\n",
      "RMSE: 18.3576322 in 93 rounds\n",
      "\n",
      "max_depth: 3, eta: 0.5\n",
      "RMSE: 18.567281599999998 in 47 rounds\n",
      "\n",
      "max_depth: 3, eta: 1.0\n",
      "RMSE: 19.2257581 in 28 rounds\n",
      "\n",
      "max_depth: 4, eta: 0.01\n",
      "RMSE: 18.9814758 in 300 rounds\n",
      "\n",
      "max_depth: 4, eta: 0.1\n",
      "RMSE: 18.0856358 in 113 rounds\n",
      "\n",
      "max_depth: 4, eta: 0.3\n",
      "RMSE: 18.360612500000002 in 42 rounds\n",
      "\n",
      "max_depth: 4, eta: 0.5\n",
      "RMSE: 18.6548563 in 20 rounds\n",
      "\n",
      "max_depth: 4, eta: 1.0\n",
      "RMSE: 19.557481000000003 in 14 rounds\n",
      "\n",
      "max_depth: 5, eta: 0.01\n",
      "RMSE: 18.770739 in 300 rounds\n",
      "\n",
      "max_depth: 5, eta: 0.1\n",
      "RMSE: 18.065358999999997 in 87 rounds\n",
      "\n",
      "max_depth: 5, eta: 0.3\n",
      "RMSE: 18.3119521 in 20 rounds\n",
      "\n",
      "max_depth: 5, eta: 0.5\n",
      "RMSE: 18.7312344 in 10 rounds\n",
      "\n",
      "max_depth: 5, eta: 1.0\n",
      "RMSE: 19.8942652 in 5 rounds\n",
      "\n",
      "Best parameters are: Max_depth= 5, eta= 0.1, num_rounds = 87. Corresponding RMSE: 18.065358999999997\n"
     ]
    }
   ],
   "source": [
    "param_grid = [(max_depth, eta) for max_depth in np.arange(2,6) for eta in np.array([0.01, 0.1, 0.3, 0.5, 1])]\n",
    "\n",
    "min_rmse = np.inf\n",
    "best_params = None\n",
    "params = dict()\n",
    "params[\"objective\"] = \"reg:squarederror\"\n",
    "for max_depth, eta in param_grid:\n",
    "    print(\"max_depth: {}, eta: {}\".format(max_depth, eta))\n",
    "    \n",
    "    params[\"max_depth\"] = max_depth\n",
    "    params[\"eta\"] = eta\n",
    "    \n",
    "    cv_res = xgb.cv(params, dtrain, num_boost_round= num_rounds, early_stopping_rounds= 10, nfold = 10, seed = 89)\n",
    "    \n",
    "    best_rmse_val = cv_res[\"test-rmse-mean\"].min()\n",
    "    best_num_rounds = cv_res[\"test-rmse-mean\"].argmin() + 1\n",
    "    \n",
    "    print(\"RMSE: {} in {} rounds\".format(best_rmse_val, best_num_rounds))\n",
    "    print()\n",
    "    \n",
    "    if best_rmse_val < min_rmse:\n",
    "        min_rmse = best_rmse_val\n",
    "        best_params = (max_depth, eta, best_num_rounds)\n",
    "        \n",
    "print(\"Best parameters are: Max_depth= {}, eta= {}, num_rounds = {}. Corresponding RMSE: {}\".format(best_params[0],\n",
    "                                                                                                    best_params[1],\n",
    "                                                                                                    best_params[2],\n",
    "                                                                                                    min_rmse))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We will use the best parameters to train the final regressor. The `num_boost_round` value obtained above is the best value for cross validation. We can take a value that is different from the above number but not very far from it. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE after hyperparameter tuning:  19.06832558062978\n"
     ]
    }
   ],
   "source": [
    "params_tuned = {\"max_depth\":5, \"eta\":0.1, \"objective\":\"reg:squarederror\"}\n",
    "bst_tuned = xgb.train(params_tuned, dtrain, num_boost_round= 100)\n",
    "\n",
    "rul_pred_tuned = bst_tuned.predict(dtest)\n",
    "\n",
    "preds_for_each_engine_tuned = np.split(rul_pred_tuned, np.cumsum(num_test_windows_list)[:-1])\n",
    "mean_pred_for_each_engine_tuned = [np.average(ruls_for_each_engine, weights = np.repeat(1/num_windows, num_windows)) \n",
    "                                   for ruls_for_each_engine, num_windows in zip(preds_for_each_engine_tuned,\n",
    "                                                                                num_test_windows_list)]\n",
    "RMSE_tuned = np.sqrt(mean_squared_error(true_rul, mean_pred_for_each_engine_tuned))\n",
    "print(\"RMSE after hyperparameter tuning: \", RMSE_tuned)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that while prediction, we are predicting RUL values for last 5 examples of every engine. Then we take mean of all 5 predictions for each engine and calculate final RMSE.\n",
    "\n",
    "If instead we wish to take only the last example of every engine to make predictions and calculate RUL, we can do so by taking the last prediction of every engine as calculated before and calculate RMSE as follows."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([  4,   9,  14,  19,  24,  29,  34,  39,  44,  49,  54,  59,  64,\n",
       "        69,  74,  79,  84,  89,  94,  99, 104, 109, 114, 119, 124, 129,\n",
       "       134, 139, 144, 149, 154, 159, 164, 169, 174, 179, 184, 189, 194,\n",
       "       199, 204, 209, 214, 219, 224, 229, 234, 239, 244, 249, 254, 259,\n",
       "       264, 269, 274, 279, 284, 289, 294, 299, 304, 309, 314, 319, 324,\n",
       "       329, 334, 339, 344, 349, 354, 359, 364, 369, 374, 379, 384, 389,\n",
       "       394, 399, 404, 409, 414, 419, 424, 429, 434, 439, 444, 449, 454,\n",
       "       459, 464, 469, 474, 479, 484, 489, 494, 499])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "indices_of_last_examples = np.cumsum(num_test_windows_list) - 1\n",
    "indices_of_last_examples"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE (Taking only last examples):  18.436723746730593\n"
     ]
    }
   ],
   "source": [
    "preds_for_last_example = np.concatenate(preds_for_each_engine_tuned)[indices_of_last_examples]\n",
    "\n",
    "RMSE_new = np.sqrt(mean_squared_error(true_rul, preds_for_last_example))\n",
    "print(\"RMSE (Taking only last examples): \", RMSE_new)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If you are not convinced by above calculations, for the sake of clarity, we will do the same thing in a more conventional way. First, we will extract last examples from each engine. Then we will make predictions using that data and compute new RMSE value. Finally, we will compare predicted rul of conventional method to that obtained before.\n",
    "\n",
    "We will do this only for this example as a demonstration. For other notebooks, we will just use results as obtained above."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Processed test data shape:  (100, 1, 14)\n",
      "True RUL shape:  (100,)\n"
     ]
    }
   ],
   "source": [
    "test_data = pd.read_csv(\"/home/biswajit/data/cmapss_data/test_FD001.txt\", sep = \"\\s+\", header = None)\n",
    "\n",
    "window_length = 1\n",
    "shift = 1\n",
    "\n",
    "num_test_windows = 1    \n",
    "processed_test_data_new = []\n",
    "num_test_windows_list_new = []\n",
    "\n",
    "for i in np.arange(1, num_machines + 1):\n",
    "    temp_test_data = test_data[test_data[0] == i].drop(columns=columns_to_be_dropped).values\n",
    "    \n",
    "    # Verify if data of given window length can be extracted from both training and test data\n",
    "    if (len(temp_test_data) < window_length):\n",
    "        print(\"Test engine {} doesn't have enough data for window_length of {}\".format(i, window_length))\n",
    "        raise AssertionError(\"Window length is larger than number of data points for some engines. \"\n",
    "                             \"Try decreasing window length.\")\n",
    "        \n",
    "    test_data_for_an_engine, num_windows = process_test_data(temp_test_data, window_length = window_length, shift = shift,\n",
    "                                                             num_test_windows = num_test_windows)\n",
    "    \n",
    "    processed_test_data_new.append(test_data_for_an_engine)\n",
    "    num_test_windows_list_new.append(num_windows)\n",
    "\n",
    "processed_test_data_new = np.concatenate(processed_test_data_new)\n",
    "\n",
    "\n",
    "print(\"Processed test data shape: \", processed_test_data_new.shape)\n",
    "print(\"True RUL shape: \", true_rul.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "New processed test data shape:  (100, 14)\n"
     ]
    }
   ],
   "source": [
    "processed_test_data_new = processed_test_data_new.reshape(-1, processed_test_data_new.shape[2])\n",
    "print(\"New processed test data shape: \", processed_test_data_new.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we will predict using new processed test data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RMSE (Taking only last examples):  18.436723746730593\n"
     ]
    }
   ],
   "source": [
    "dtest_new = xgb.DMatrix(processed_test_data_new)\n",
    "rul_pred_new = bst_tuned.predict(dtest_new)\n",
    "\n",
    "RMSE_new = np.sqrt(mean_squared_error(true_rul, rul_pred_new))\n",
    "print(\"RMSE (Taking only last examples): \", RMSE_new)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now compare `rul_pred_new` with previous prediction result."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([120.34918  , 117.902885 ,  56.275314 ,  95.03495  , 111.26035  ,\n",
       "       102.793625 , 105.96954  , 100.82076  , 106.26186  , 104.109055 ,\n",
       "        69.33677  ,  89.632385 ,  91.091125 , 114.760475 , 118.22822  ,\n",
       "       106.76344  ,  55.95562  ,  60.836063 , 109.43685  ,  22.378178 ,\n",
       "        69.2129   , 113.48648  , 120.017204 ,  25.197409 , 118.487366 ,\n",
       "       109.03304  , 119.954544 ,  98.500916 , 101.3947   , 101.290276 ,\n",
       "        21.330976 ,  46.37977  , 103.02781  ,   7.7524037,   7.503125 ,\n",
       "        22.477757 ,  60.04182  ,  46.806366 , 119.00638  ,  28.472136 ,\n",
       "        70.10673  ,  17.175974 ,  70.647575 , 106.6811   ,  77.5258   ,\n",
       "        48.721004 , 113.70341  , 100.778114 ,  12.653203 , 105.44532  ,\n",
       "       114.37196  ,  27.483463 ,  35.256554 , 122.81615  , 112.858635 ,\n",
       "        12.740914 , 112.446884 ,  48.063595 , 119.324135 , 108.21267  ,\n",
       "        44.49405  ,  48.223545 ,  64.81646  ,  55.721066 , 121.77935  ,\n",
       "        13.88252  , 114.27567  ,  17.604425 , 115.87678  , 111.42934  ,\n",
       "       109.741585 ,  72.12501  , 119.477715 , 105.02609  , 118.82322  ,\n",
       "        12.45535  ,  31.410202 , 122.8558   , 115.64528  ,  78.21962  ,\n",
       "         6.8546777,   9.082533 , 107.1129   ,  41.06984  , 107.207344 ,\n",
       "        79.79188  , 113.21953  , 115.48951  , 108.17237  ,  35.005882 ,\n",
       "        26.57127  ,  20.13976  ,  43.71428  ,  40.983814 , 114.68023  ,\n",
       "       122.92871  ,  73.605354 ,  88.01452  , 122.49625  ,  16.659346 ],\n",
       "      dtype=float32)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "rul_pred_new"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([120.34918  , 117.902885 ,  56.275314 ,  95.03495  , 111.26035  ,\n",
       "       102.793625 , 105.96954  , 100.82076  , 106.26186  , 104.109055 ,\n",
       "        69.33677  ,  89.632385 ,  91.091125 , 114.760475 , 118.22822  ,\n",
       "       106.76344  ,  55.95562  ,  60.836063 , 109.43685  ,  22.378178 ,\n",
       "        69.2129   , 113.48648  , 120.017204 ,  25.197409 , 118.487366 ,\n",
       "       109.03304  , 119.954544 ,  98.500916 , 101.3947   , 101.290276 ,\n",
       "        21.330976 ,  46.37977  , 103.02781  ,   7.7524037,   7.503125 ,\n",
       "        22.477757 ,  60.04182  ,  46.806366 , 119.00638  ,  28.472136 ,\n",
       "        70.10673  ,  17.175974 ,  70.647575 , 106.6811   ,  77.5258   ,\n",
       "        48.721004 , 113.70341  , 100.778114 ,  12.653203 , 105.44532  ,\n",
       "       114.37196  ,  27.483463 ,  35.256554 , 122.81615  , 112.858635 ,\n",
       "        12.740914 , 112.446884 ,  48.063595 , 119.324135 , 108.21267  ,\n",
       "        44.49405  ,  48.223545 ,  64.81646  ,  55.721066 , 121.77935  ,\n",
       "        13.88252  , 114.27567  ,  17.604425 , 115.87678  , 111.42934  ,\n",
       "       109.741585 ,  72.12501  , 119.477715 , 105.02609  , 118.82322  ,\n",
       "        12.45535  ,  31.410202 , 122.8558   , 115.64528  ,  78.21962  ,\n",
       "         6.8546777,   9.082533 , 107.1129   ,  41.06984  , 107.207344 ,\n",
       "        79.79188  , 113.21953  , 115.48951  , 108.17237  ,  35.005882 ,\n",
       "        26.57127  ,  20.13976  ,  43.71428  ,  40.983814 , 114.68023  ,\n",
       "       122.92871  ,  73.605354 ,  88.01452  , 122.49625  ,  16.659346 ],\n",
       "      dtype=float32)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "preds_for_last_example"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As we can see, both predictions are identical. So we need not do conventional calculations again. \n",
    "\n",
    "For CMAPSS data, along with RMSE another metric (S-score) is usually reported in literature. S-score is defined as:\n",
    "\n",
    "$$S= \\sum_{i=1}^N{s_i}$$\n",
    "\n",
    "where, \n",
    "\n",
    "$$\n",
    "\\begin{equation}\n",
    "    s_i=\n",
    "    \\begin{cases}\n",
    "      (e^{-\\frac{d_i}{13}})-1, & \\text{for}\\ d_i < 1 \\\\\n",
    "      (e^{\\frac{d_i}{10}})-1, & \\text{for}\\ d_i \\geq 1\\\\\n",
    "    \\end{cases}\n",
    "  \\end{equation}\n",
    "  $$\n",
    "  \n",
    "We can compute the S-metric as follows."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "def compute_s_score(rul_true, rul_pred):\n",
    "    \"\"\"\n",
    "    Both rul_true and rul_pred should be 1D numpy arrays.\n",
    "    \"\"\"\n",
    "    diff = rul_pred - rul_true\n",
    "    return np.sum(np.where(diff < 0, np.exp(-diff/13)-1, np.exp(diff/10)-1))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "S-score:  1024.4290148071254\n"
     ]
    }
   ],
   "source": [
    "s_score = compute_s_score(true_rul, preds_for_last_example)\n",
    "print(\"S-score: \", s_score)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot true and predicted RUL values\n",
    "plt.plot(true_rul, label = \"True RUL\", color = \"red\")\n",
    "plt.plot(preds_for_last_example, label = \"Pred RUL\", color = \"blue\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We can also plot variable importance score."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:title={'center':'Feature importance'}, xlabel='F score', ylabel='Features'>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEWCAYAAACXGLsWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy86wFpkAAAACXBIWXMAAAsTAAALEwEAmpwYAAAxxklEQVR4nO3deZgUhbX+8e9hUxbBEBQRURgRR5ZhFFSMXhhiBjeMEk3UEI0guVET0URwiVej5CrESNSI/owiKEsMRiWYBE2MMKBGRMRhERzhhkFBBEEGGcIq5/dH17Q9a/cs3dUN7+d5+qG6tn67mOkzVdV1ytwdERGRmjQKO4CIiKQ/FQsREYlLxUJEROJSsRARkbhULEREJC4VCxERiUvFQiRBZvYLM5sYdg6RMJius5BUMLNioD3wZczobu7+ST3XOcLd/1m/dJnHzO4Gurr7D8LOIgcH7VlIKl3o7q1iHnUuFA3BzJqE+fp1lam5JbOpWEiozKyNmT1lZhvMbL2Z/a+ZNQ6mHW9mc8xsi5ltNrPpZnZ4MG0qcCzwFzMrNbNbzCzPzNZVWH+xmX0rGL7bzJ43s2lm9gVwdU2vX0XWu81sWjDc2czczIaZ2cdmttXMrjWzU81sqZmVmNmEmGWvNrM3zWyCmW0zsw/M7OyY6Ueb2Utm9rmZrTazH1V43djc1wK/AC4L3vuSYL5hZrbSzLab2b/N7Mcx68gzs3VmdrOZbQre77CY6c3NbLyZrQ3yvWFmzYNp/czsX8F7WmJmeXX4r5YMp2IhYXsa2Ad0BU4GBgEjgmkGjAWOBk4COgF3A7j7lcBHfLW3cn+Cr3cR8DxwODA9zusn4nTgBOAy4CHgDuBbQA/ge2Y2oMK8/we0A34JvGhmbYNpfwTWBe/1UuA+M/tmNbmfAu4DZgTvvXcwzyZgMNAaGAY8aGanxKzjKKAN0BG4BnjUzL4WTHsA6AN8A2gL3ALsN7OOwN+A/w3GjwJeMLMjarGN5ACgYiGp9Ofgr9MSM/uzmbUHzgducvcd7r4JeBC4HMDdV7v7q+6+290/A34LDKh+9Ql5y93/7O77iXyoVvv6CfqVu+9y938AO4Bn3X2Tu68HXidSgMpsAh5y973uPgMoAi4ws07AmcCtwboKgYnAVVXldvedVQVx97+5+/95xDzgH8B/xcyyFxgTvP5soBQ40cwaAcOBG919vbt/6e7/cvfdwA+A2e4+O3jtV4FFwXaTg4iOfUoqXRx7MtrMTgOaAhvMrGx0I+DjYHp74GEiH3iHBdO21jPDxzHDx9X0+gnaGDO8s4rnrWKer/fy3yhZS2RP4mjgc3ffXmFa32pyV8nMziOyx9KNyPtoASyLmWWLu++Lef6fIF874FAiez0VHQd818wujBnXFJgbL48cWFQsJEwfA7uBdhU+xMrcBzjQy90/N7OLgQkx0yt+lW8HkQ9IAIJzDxUPl8QuE+/1G1pHM7OYgnEs8BLwCdDWzA6LKRjHAutjlq34Xss9N7NDgBeI7I3Mcve9ZvZnIofy4tkM7AKOB5ZUmPYxMNXdf1RpKTmo6DCUhMbdNxA5VDLezFqbWaPgpHbZoabDiBwq2RYcOx9dYRUbgayY5x8Ch5rZBWbWFPgf4JB6vH5DOxIYaWZNzey7RM7DzHb3j4F/AWPN7FAzyyFyTmFaDevaCHQODiEBNCPyXj8D9gV7GYMSCRUckpsE/DY40d7YzM4ICtA04EIzOycYf2hwsvyY2r99yWQqFhK2q4h80K0gcojpeaBDMO0e4BRgG5GTrC9WWHYs8D/BOZBR7r4NuJ7I8f71RPY01lGzml6/ob1N5GT4ZuBe4FJ33xJMuwLoTGQvYybwyzjXj/wp+HeLmS0O9khGAs8ReR/fJ7LXkqhRRA5ZvQN8DvwaaBQUsouIfPvqMyJ7GqPRZ8dBRxfliaSAmV1N5ALCs8LOIlIX+utARETiUrEQEZG4dBhKRETi0p6FiIjElZHXWRx++OHetWvXsGPUyY4dO2jZsmXYMepM+cOTydlB+cP27rvvbnb3Ordpychi0b59exYtWhR2jDopKCggLy8v7Bh1pvzhyeTsoPxhM7O19Vleh6FERCQuFQsREYlLxUJEROJSsRARkbhULEREJC4VCxERiUvFQkRE4lKxEBGRuFQsREQkLhULEZEQ7Nq1i9NOO43evXvTo0cPfvnLXwIwYcIEunbtipmxefPm6Pxbt25lyJAh5OTkcNppp7F8+fKU5g2lWJjZSDNbaWbrzWybmRUGj7vCyCMikmqHHHIIc+bMYcmSJRQWFvLKK6+wYMECzjzzTP75z39y3HHHlZv/vvvuIzc3l6VLlzJlyhRuvPHGlOYNqzfU9cC3gK7AKHcfXJuFd+79ks63/S0pwZLt5l77uDpDs4PyhymTs4PylykedwEAZkarVq0A2Lt3L3v37sXMOPnkk6tcbsWKFdx2220AZGdnU1xczMaNG2nfvn29MyUi5XsWZvY4kAW8DFS9VUREDgJffvklubm5HHnkkeTn53P66adXO2/v3r158cXIbegXLlzI2rVrWbcu3i3mG04oNz8ys2KgL9ATeAFYR+RG9aPc/f1qlvlv4L8B2rU7os9dDz2ZmrANrH1z2Lgz7BR1p/zhyeTsoPxlenVsU2lcaWkpd955JyNHjqRLly4AXH755fz+97+nTZvI/Dt27GDChAmsWrWKrKwsPvroI0aNGkWit2sYOHDgu+7et87B3T3lD6AYaAe0BloF484HViWyfLdu3TxTzZ07N+wI9aL84cnk7O7KH88999zjv/nNb6LPjzvuOP/ss8+qnHf//v1+3HHH+bZt2xJeP7DI6/G5Heq3odz9C3cvDYZnA03NrF2YmUREUuGzzz6jpKQEgJ07d/Lqq6+SnZ1d7fwlJSXs2bMHgIkTJ9K/f39at26diqhAyF+dNbOjzMyC4dOCPFvCzCQikgobNmxg4MCB5OTkcOqpp5Kfn8/gwYP53e9+xzHHHMO6devIyclhxIgRAKxcuZKePXty4okn8vLLL/Pwww+nNG/Yd8q7FLjOzPYBO4HLg90lEZEDWk5ODu+9916l8SNHjmTkyJGVxp9xxhl8+OGHqYhWpVCKhbt3DgYnBA8REUljuoJbRETiUrEQEZG4VCxERCQuFQsREYlLxUJEpIHVtqOsuzNy5Ei6du1KTk4OixcvDit6tUL5NpSZjQSuA/4N7AGOB3YBw909tX13RUQaWFlH2VatWrF3717OOusszjvvPM4880wGDx5MXl5euflffvllVq1axapVq3j77be57rrrePvtt8MJX42w9iyuB/KBFUChu+cAVwGpvcpERCQJauoo27lz50rzz5o1i6uuugozo1+/fpSUlLBhw4YUp65ZyvcsKnSdzQLOBXD3D8yss5m1d/eNNa1DLcrDo/zhyeTscHDkL2s/DpGOsn369GH16tX85Cc/qbGj7Pr16+nUqVP0+THHHMP69evp0KFD/YM3kJQXC3e/1szOBQYCPwe+A7wetPs4DjgGqFQsKnSd5a5e+1IXugG1bx75octUyh+eTM4OB0f+goKCcs8feuihaEfZ7OzsaEfZXbt28eabb0Y7ym7ZsoX33nuPffsi69+6dSvvvvsupaWlDf9G6ijsdh/jgIfNrBBYBrwHfFnVjO7+BPAEwLFZXX38srCj183NvfaRqdlB+cOUydnh4MhfPDSvyvGLFy9my5YtDBs2DIBDDz2UM888k3btIn1Tc3JyaNeuXfRcxo4dO/j2t7+dVnsWobYorzDOgvGt4y2vFuXhUf7wZHJ294Mr/6ZNm3zr1q3u7v6f//zHzzrrLP/LX/4SnV6x/fhf//pXP/fcc33//v3+1ltv+amnntpQsaPI5BblZna4mTULno4A5rv7F2FmEhGpr9p2lD3//PPJysqia9eu/OhHP+Kxxx4L+R1UFvY+4UnAM2bmwPvANSHnERGpt9p2lDUzHn300VREq7Owu85uBrqFkUFERBKnK7hFRCQuFQsREYlLxUJEROJSsRARkbhULEREJC4VCxFJax9//DEDBw6ke/fu9OjRg4cf/qrf6COPPEJ2djY9evTglltuAWDhwoXk5uaSm5tL7969mTlzZljRDyhhtyjPJtLmw4DtwHXuviSMTCKSnpo0acL48eM55ZRT2L59O3369CE/P5+NGzcya9YslixZwiGHHMKmTZsA6NmzJ4sWLaJJkyZs2LCB3r17c+GFF9KkSdiXlWW2sLbe9cC3gGOBle6+1czOI9L7qfrWjAF1nQ2P8ocnk7ND3fIXj7uADh06RHskHXbYYZx00kmsX7+eJ598kttuu41DDjkEgCOPPBKAFi1aRJfftWsXZtZA7+DglvLDUBValJ/u7luDSQuIdJwVEalScXEx7733Hqeffjoffvghr7/+OqeffjoDBgzgnXfeic739ttv06NHD3r16sXjjz+uvYoGYJH+Uil+UbNioK+7b44ZNwrIdvcR1SwT26K8z10PPZmKqA2ufXPYuDPsFHWn/OHJ5OxQt/y9OraJDu/cuZMbb7yRH/zgB/Tv359hw4Zx8sknc8MNN/DBBx8wZswY/vCHP5Tbk1i7di3jxo3j4YcfplmzZlW9RMJKS0ujNzTKRAMHDnzX3fvWeQX16UJY1wcVus4SubfFSuDriSyvrrPhUf7wZHJ29/rl37Nnjw8aNMjHjx8fHXfOOef4nDlzos+zsrJ806ZNlZYdOHCgv/POO3V+7TKZvv3J5K6zAGaWA0wELnL3LWHnEZH04u5cc801nHTSSfz85z+Pjr/44ouZO3cuAB9++CF79uyhXbt2rFmzJnoTobVr1/LBBx9UeStTqZ1QD+SZ2bHAi8CV7v5hmFlEJD29+eabTJ06lV69epGbmwvAfffdx/Dhwxk+fDg9e/akWbNmPPPMM5gZb7zxBuPGjaNp06Y0atSIxx57LHqTIam7sM/63AV8HXgsOM64z+tzTE1EDjhnnXVW2eHqSqZNm1Zp3JVXXsmVV16Z7FgHnbBblI8IHiIiksZCP2chIiLpT8VCRETiUrEQEZG4VCxERCQuFQsRqbfqOsPeeeed5OTkkJuby+jRo/nkk08A2Lp1K0OGDCEnJ4fTTjuN5cuXhxlfEhBKsTCzkWa20sxeMLO3zGx30O5DRDJQWWfYFStWsGDBAh599FFWrFjB6NGjWbp0KYWFhfTr148xY8YAkeskcnNzWbp0KVOmTOHGG28M+R1IPGHtWVwP5BNpUz4SeCCkHCLSADp06MApp5wClO8M27p16+g8sR1gV6xYwTe/+U0AsrOzKS4uZuPGjakPLglL+XUWFbrOTnL3B83sgtqsQy3Kw6P84UnX7MXjyv/6xnaGBbjjjjuYMmUKTZo0YeHChQD07t2bF198kf/6r/9i4cKFrF27lnXr1tG+ffuU55fEpEXXWTO7Gyh192r3MNR1Nj0of3jSNXtNnWFjTZ48GYBhw4axY8cOJkyYwKpVq8jKyuKjjz5i1KhRdO3aNaXZa+Ng7zqbMcUi1rFZXb3R9x6OP2MaurnXPsYvC7vLSt0pf3jSNXvZnsXevXsZPHgw55xzTrmGf2VmzJjBr371q0ons92dLl26sHTp0nKHrdJNQUEBeXl5YceoMzOrV7FIv5+8BDRv2piicbU6cpU2CgoKKB6aF3aMOlP+8KRz9uo6w65atYoTTjgBiDQEzM7OBqCkpIQWLVrQrFkzJk6cSP/+/dO6UEiGFgsRSS/VdYZ96qmnKCoqolGjRrRq1Yo//elPAKxcuZIf/vCHmBk9evTgqaeeCjG9JCLsFuVHAYuA1sB+M7sJ6O7uX4SZS0Rqp7rOsOeff350uKCggI4dOwJwxhln8OGHuitBJgm76yzovtsiImlPV3CLiEhcKhYiIhKXioWIiMSlYiEiInGpWIiISFwqFiJSperajo8ePZrs7GxycnIYMmQIJSUlAEyfPp3c3Nzoo1GjRhQWFob3BqRBhd2ifKuZLTWzQjNbZGZnhZFHRCqrru14fn4+y5cvZ+nSpXTr1o2xY8cCMHToUAoLCyksLGTq1Kl06dIleoGeZL6wLsq7HvgWUALscHc3sxzgOSA73sLqOhse5Q9PqrKX9Xrq0KEDHTp0AMq3HR80aFB03n79+vH8889XWsezzz7L5ZdfnvSskjop37Oo0KL8R/7VZZ8tgdR3NRSRuCq2HS8zadIkzjvvvErzz5gxgyuuuCJV8SQFUr5n4e7Xmtm5wEB332xmQ4CxwJFAtd0BK7Qo565e+1KSt6G1bx75CzFTKX94UpW9oKCg3POytuMjRoxg8eLF0fHTpk2jpKSEjh07lltmxYoVuDubN28uN760tLTSujNJpuevN3dP+QMoBtpVGNcf+Gciy3fr1s0z1dy5c8OOUC/KH54wsu/Zs8cHDRrk48ePLzd+8uTJ3q9fP9+xY0elZW666Sa/9957K43P5G3vnvn5gUVej8/ttOk66+7zzSzLzNp5cJ8LEQmPV9N2/JVXXuH+++9n3rx5tGjRotwy+/fv57nnnuP1119PdVxJsrC7znYF/s/d3cxOAQ4BtoSZSUQiqms7PnLkSHbv3k1+fj4QOcn9+OOPAzB//nw6depEVlZWWLElScLes7gEuMrM9gI7gcuC3SURCVkibccrysvLY8GCBcmMJSEJu0X5r4OHiIikMV3BLSIicalYiIhIXCoWIiISl4qFiIjEpWIhIlVS11mJFXbX2elmlhd0nX3fzOaFkUdEKlPXWYkVdtfZUuBfwLnu/pGZHRlSHhGpQF1nJVbKi0WFrrN/BF50948A3H1TIutQi/LwKH94Ut2ivNy4GrrOXnbZZZXmnzFjBrNmzUpaRkk9C+OCaTMrBvoC/wM0BXoAhwEPu/uUapaJ7Trb566HnkxN2AbWvjls3Bl2irpT/vCkKnuvjm3KPS/rOvuDH/yA/v37R8dPmzaNoqIixowZg5lFx69YsYIHHniASZMmlVtPaWkprVq1Sm74JMr0/AMHDnzX3fvWdfmw2300AfoAZwPNgbfMbIG7f1hxRnd/AngC4Nisrj5+WdjR6+bmXvvI1Oyg/GFKVfbioXnR4b179zJ48GCuvfbacs0En376ad5//31ee+21Ss0EZ82axYgRI8jLyys3vqCgoNK4TJLp+esr7N+adcAWd98B7DCz+UBvoFKxiNW8aWOKqthVzgQFBQXlfhkzjfKHJ9XZ1XVWYiX0bSgzO97MDgmG84JvMx3eAK8/CzjLzJqYWQvgdGBlA6xXROqprOvsnDlzol+HnT17Nj/96U/Zvn07+fn55Obmcu2110aXUdfZA1eiexYvAH2DluJPEPmQ/wNQffvJBLj7SjN7BVgK7Acmuvvy+qxTRBqGus5KrESLxX533xfcAvURd3/EzN6r64vGdJ3F3X8D/Kau6xIRkeRL9KK8vWZ2BfBD4K/BuKbJiSQiIukm0WIxDDgDuNfd15hZF2Bq8mKJiEg6SegwlLuvMLNbgWOD52vQTYtERA4aiX4b6kKgEHgleJ5rZi8lMZeIiKSRRA9D3Q2cBpQAuHshkZYdIiJyEEj4BLe7b6swbn9DhxGR5Kmu5fif/vQnevToQaNGjVi0aFF0/uLiYpo3bx69xiL2ego5+CT61dn3zez7QGMzOwEYSaRbbJ2Y2UjgOiLnQFbFZDkJOMLdP6/rukWkamUtx0855RS2b99Onz59yM/Pp2fPnrz44ov8+Mc/rrTM8ccfr3tSCJB4sbgBuAPYTeRivL8D/1uP170e+Ja7rysbEZwX+VkihUJdZ8Oj/OGpT/bicRdU23I8Pz+/IWPKASruYSgzawz8zd3vcPdTg8f/uPuuurxgbItyM/tZzKQrgGfrsk4RqZ3qWo5XtGbNGk4++WQGDBigfk8HuYRalJvZa8B3qjhvUbcXDVqUu/vm4HkLIk0Fu1a3Z6EW5elB+cNTn+yxbcerazl+0003cd1113HiiScCsGfPHnbu3EmbNm0oKirizjvvZPLkybRs2bJOGTK9xXem569vi3LcPe6DSC+oj4CngN+VPRJZtpr1FQPtYp5fBvwl0eW7devmmWru3LlhR6gX5Q9PQ2Tfs2ePDxo0yMePH19p2oABA/ydd96pdtl40+PJ5G3vnvn5gUVex89sd0/4nMWLwSNZLkeHoESSyqtpOV6dzz77jLZt29K4cWP+/e9/s2rVKnWTPYglegX3M8kKYGZtgAHAD5L1GiLyVcvxXr16kZubC8B9993H7t27ueGGG/jss8+44IILyM3N5e9//zvz58/nrrvuomnTpjRq1IjHH3+ctm3bhvsmJDQJFQszWwNUOrnh7g3xZ8YQ4B8euQGSiCRJdS3HAYYMGVJp3CWXXMIll1yS7FiSIRI9DBV7UuRQ4LtAnf/E8PItyp8Gnq7rukREJPkSuoLb3bfEPNa7+0NAZt7XVEREai3Rw1CnxDxtRGRPI+z7d4uISIok+oE/PmZ4H7AG+F7DxxERkXSUaLG4xt3/HTsiuAGSiIgcBBLtOvt8guNEJA3VtuPswoULo91me/fuzcyZM8OKLmmixj0LM8sGegBtzOw7MZNaE/lWVI1iusuuAI4GTgHucPcHYuY5F3gYaAxMdPdxtX0TIlKz2nac7dmzJ4sWLaJJkyZs2LCB3r17c+GFF9KkiU5VHqzi/c+fCAwGDgcujBm/HfhRAuu/HvgWsAc4Drg4dmLQpPBRIJ9Ib6h3zOwld1+RwLpFJEG17TjbokWL6PCuXbsws5TklPRVY7Fw91nALDM7w93fqs2KY7vLApPc/UEzq/h129OA1WXnQ8zsj8BFRPZEqqUW5eFR/vDUJXvxuMrfcE+04+zbb7/N8OHDWbt2LVOnTtVexUEu0f/998zsJ0QOSUUPP7n78OoWcPdrg0NMAz3oLluFjsDHMc/XAVX+BFfoOstdvfYlGD29tG8e+aXPVMofnrpkLygoKPe8rOPsiBEjWLx4cXR8SUkJ7777LqWlpeXmf/TRR1m7di2/+MUvaNmyJc2aNatz/tLS0kp5Mkmm56+vRIvFVOAD4BxgDDAUWJmsUFVx9yeAJwCOzerq45dl5l85N/faR6ZmB+UPU12yFw/Niw7v3buXwYMHc+2111ZqJHj44YfTp08f+vatuoP1M888Q9u2baudnoiCggLy8vLizpeuMj1/fSX6k9fV3b9rZhe5+zNm9gegIe6Esh7oFPP8mGBcjZo3bUxRFbvXmaCgoKDcL3CmUf7w1Cd7bTvOrlmzhk6dOtGkSRPWrl3LBx98QOfOnev02nJgSLRY7A3+LTGznsCnwJEN8PrvACcE12ysJ9Kq/PsNsF4RiVHbjrNvvPEG48aNi3acfeyxx2jXrl24b0JClWixeMLMvgbcCbwEtALuSvRFzOwoYBGRr9zuN7ObgO7u/oWZ/ZTIPb0bEzkR/n4t8otIAmrbcfbKK6/kyiuvTHYsySCJ3s9iYjA4j8g3nBIS212WyCGmquaZDcxOdJ0iIpJ6CV3BbWbtzewpM3s5eN7dzK5JbjQREUkXibb7eJrIoaKjg+cfAjclIY+IiKShRItFO3d/DtgP4O77gC+TlkpERNJKosVih5l9neDWqmbWD9iWtFQiIpJWEv021M+JfAvqeDN7EzgCuDRpqUREJK3UuGdhZscCuPtiYADwDeDHQA93X5r8eCJSG9W1Iv/888/Jz8/nhBNOID8/n61btwLwm9/8JtqKvGfPnjRu3JjPP/88zLcgaSreYag/xwzPcPf33X25u++tboFEmNlIM1tpZtPN7HdmttrMlla4fauI1FJZK/IVK1awYMECHn30UVasWMG4ceM4++yzWbVqFWeffTbjxkXuBDB69GgKCwspLCxk7NixDBgwgLZt24b8LiQdxTsMFduXOOHrKxJQ1ro8B7gBOIFIA8H/RzWNBGOp62x4lD88NWUv6y5bXSvyWbNmRZvg/fCHPyQvL49f//rX5dbx7LPPcsUVVyTvDUhGi7dn4dUM11mF1uUzgSkesQA43Mw6NMTriBzsYluRb9y4MVpEjjrqKDZu3Fhu3v/85z+88sorXHLJJWFElQwQb8+it5l9QWQPo3kwTPDc3b11bV8wtnU5kes3KrYo7whsqLicWpSnB+UPT03Z47Ui37dvX7l5vvzyy3LP58yZQ3Z2NkuXJu9UZKa3+M70/PXm7il/AMVAO+CvwFkx418D+sZbvlu3bp6p5s6dG3aEelH+8CSafc+ePT5o0CAfP358dFy3bt38k08+cXf3Tz75xCv+Dl188cU+ffr0BstalUze9u6Znx9Y5PX43E70OotkqVOLchGpmlfTivzb3/42zzzzDBC5N8VFF10UnbZt2zbmzZtXbpxIRWEXi5eAqyyiH7DN3SsdghKRxJS1Ip8zZ070K7GzZ8/mtttu49VXX+WEE07gn//8J7fddlt0mZkzZzJo0CBatmwZYnJJd2HfMmw2cD6wGvgPMCzcOCKZraZW5K+99lqV46+++mquvvrqJKaSA0EoxcLLty7/SRgZREQkcWEfhhIRkQygYiEiInGpWIiISFwqFiIiEpeKhUjIhg8fzpFHHknPnj2j4woLC+nXrx+5ubn07duXhQsXAuoSK+FJarGI6S77gpm9ZWa7zWxUzPRDzWyhmS0xs/fN7J5k5hFJR1dffTWvvPJKuXG33HILv/zlLyksLGTMmDHccsstgLrESniS/dXZsu6ye4DjgIsrTN8NfNPdS82sKfCGmb3skaaCIgeF/v37U1xcXG6cmfHFF5FWbNu2bePoo4+utJy6xEoqJa1YVOguO8ndHzSzC2LnCfqVlAZPmwaPuN1t1aI8PMrfcMrailfloYce4pxzzmHUqFHs37+ff/3rX6xZsyY6vaxL7IQJE1IRVSR5xcJjusu6++bq5jOzxsC7QFfgUXd/u5r51HU2DSh/w4ntYPrpp5+yY8eO6Ljf/e53XHPNNQwYMIC5c+fyne98h3vuuSc6PRVdYhtapndtzfT89WXVtQZokJWbFRPpIrs5eH43UOruD1Qx7+FE7m9xg7svr2m9x2Z19Ubfe7jB86bCzb32MX5Z2F1W6k75G07snkVxcTGDBw9m+fLIj36bNm0oKSnBzHB32rRpw0svvUReXh4AQ4YM4bvf/S7f//73w4heJwUFBdH8mSjT85vZu+7et67Lp8dvDeDuJWY2FzgXqLFYNG/amKIaduHTWUFBAcVD88KOUWfKnxpHH3008+bNIy8vjzlz5nDCCSdEp5V1iZ02bVqICeVgE2qxMLMjgL1BoWgO5AO/jrOYyAHliiuuoKCggM2bN3PMMcdwzz338OSTT3LjjTeyb98+Dj30UJ544gm2b98OqEushCMlxcLMjgIWAa2B/WZ2E9Ad6AA8E5y3aAQ85+5/TUUmkXTx7LPPVjn+3XffLfe87Hi5usRKGJJaLCp0lz2milmWAicnM4OIiNSfruAWEZG4VCxERCQuFQsREYlLxUJEROJSsRARkbhULERiVNUu/O6776Zjx47R1uCzZ88GYPr06dFxubm5NGrUiMLCwpCSiyRXKMUipnX5TDP7S0yL8mFh5BEpU1W7cICf/exn0dbg559/PgBDhw6Njps6dSpdunQhNzc3xYlFUiOsK7jLWpdfBbRx9wuDq7mLzGy6u++paWF1nQ3PgZq/rE9TVe3CE/Hss89y+eWX1zeeSNpK+Z5FhdblDhxmZga0Aj4H0qMlqEiMCRMmkJOTw/Dhw9m6dWul6TNmzNC9JeSAltSus9W+aNCNlsjNj14CsoHDgMvcvco/Wyu0KO9z10NPpiZsA2vfHDbuDDtF3R2o+Xt1bBMd/vTTT7n99tuZPHkyAJ9//jlt2rTBzJg0aRJbtmzh1ltvjc6/YsUKHnjgASZNmpTU7KWlpbRq1Sqpr5FMyh+ugQMH1qvrLO6e8gdQDLQDLgUeBIzI/SzWAK3jLd+tWzfPVHPnzg07Qr0cDPnXrFnjPXr0SHjaTTfd5Pfee29DxKvRwbDt01mm5wcWeT0+t8P+NtQw4MXgvawmUiyyQ84kUs6GDRuiwzNnziz3Tan9+/fz3HPP6XyFHPDCvp/FR8DZwOtm1h44Efh3uJHkYFZVu/CCggIKCwsxMzp37szvf//76Pzz58+nU6dOZGVlhZhaJPnCLha/Ap42s2VEDkXd6jXcglUk2apqF37NNddUO39eXh4LFixIZiSRtBBKsfDyrcsHhZFBREQSF/Y5CxERyQAqFiIiEpeKhYiIxKViISIicalYyAGrqg6yZcaPH4+ZsXlz5Mt3s2bNIicnh9zcXPr27csbb7yR6rgiaS1pxSKms+wLZvaWme02s1Ex0zuZ2VwzWxF0nL0xWVnk4FRdB9mPP/6Yf/zjHxx77LHRcWeffTZLliyhsLCQSZMmMWLEiFRGFUl7ydyzuB7IB64DRgIPVJi+D7jZ3bsD/YCfmFn3JOaRg0z//v1p27ZtpfE/+9nPuP/++4n0r4xo1apV9PmOHTvKTRORJF1nUaGz7CR3f9DMLoidx903ABuC4e1mthLoCKyIt361KA9PJuQvazdelTfeeIOOHTvSu3fvStNmzpzJ7bffzqZNm/jb39L7PYqkWlKKhbtfa2bnAgMTuSLbzDoDJwNv1zBPbNdZ7uqVmZ3M2zePfOBmqkzIX1BQEB3+9NNP2bFjBwUFBezatYupU6cyfvz46PM333yTNm0iHWe/9rWv8fjjj7NkyRJ++tOfMn78+JDeQdVKS0vLvbdMo/yZLWktysvakJcVCzO7Gyh19wcqzNcKmAfc6+4vJrLuY7O6eqPvPdywgVPk5l77GL8s7C4rdZcJ+WP3LIqLixk8eDDLly9n2bJl9O/fP1oc1q1bx9FHH83ChQs56qijyq0jKyuLhQsX0q5du5Rmr0lBQQF5eXlhx6gz5Q+XmdWrRXmov/Vm1hR4AZieaKEAaN60MUU1HGpIZwUFBRQPzQs7Rp1lcv5evXoxc+bM6C98586dWbRoEe3atWP16tUcf/zxmBmLFy9m9+7dfP3rXw83sEgaCa1YBHfHewpY6e6/DSuHHLiq6iB7/PHHVznvCy+8wJQpU2jatCnNmzdnxowZOsktEiPpxcLMjgIWAa2B/WZ2E9AdyAGuBJaZWWEw+y/cfXayM8nBoaoOsrHHnGPvtX3rrbeWu/udiJSXtGJRobPsMVXM8gaRtuQiIpLmdAW3iIjEpWIhIiJxqViIiEhcKhYiIhKXioWIiMSlYiEZp6rW43feeWe0xfigQYP45JNPAJg+fTo5OTn06tWLb3zjG6xevTqs2CIZLZRiEdO+fHrw/FQz22dml4aRRzJLVa3HR48ezdKlSyksLGTw4MGMGTMGgC5dujBv3jyWLVvGnXfemXb9nkQyRVhXcF8PfMvd15lZY+DXwD8SXVhdZ8MTZv6ynk/9+/cvd0EdQOvWraPDsS3Gv/GNb0TH9+vXL3qzIxGpnZQXi9j25WY2CXAi/aFOTXUWObDccccdTJkyhTZt2jB37txK05966ilOO+20EJKJZL6kdZ2t8UWDjrTAIcAfgIHAJOCv7v58NcvEtijvc9dDT6YmbANr3xw27gw7Rd2Fmb9XxzbR4U8//ZTbb7+dyZMnV5pv+vTp7Nmzh2HDhkXHvffeezz00EOMHTuWo48+OiV5G1ppaSmtWrUKO0adKX+4Bg4cWK+us7h7yh9AMdAO+BPQLxj3NHBpIst369bNM9XcuXPDjlAv6ZJ/zZo13qNHjyqnrV27tty0JUuWeFZWlhcVFaVN/rrI5Ozuyh82YJHX43M77G9D9QX+GOxpXAo8ZmYXh5pIMtKqVauiw7NmzSI7OxuAjz76iO985ztMnTqVbt26hRVPJOOFej8Ld+9SNmxmTxM5DPXn0AJJRqiq9fjs2bMpKiqiUaNGHHfccTz++OMAjBkzhi1btnD99dcDsHPnToqKisKML5KR0vuWZyJVqKr1+DXXXFPlvBMnTmTixInR5wfzbTFF6iOUYuHl25eXjbs69UlERCQRYZ+zEBGRDKBiISIicalYiIhIXCoWIiISl4pFhigpKeHSSy8lOzubk046ibfeeovRo0eTnZ1NTk4OQ4YMoaSkJOyYInKASlqxiOks+4KZvWVmu81sVIV5JpnZJjNbnqwcB4obb7yRc889lw8++IAlS5Zw0kknkZ+fz/Lly1m6dCndunVj7NixYccUkQNUMvcsrgfygeuAkcADVczzNHBuEjMcELZt28b8+fOj1xI0a9aMww8/nEGDBtGkSeTbz/369WPdunVhxhSRA1hSrrOI7SwLTHL3B83sgorzuft8M+tc2/UfTC3Ki8ddwJo1azjiiCMYNmwYS5YsoU+fPjz88MO0bNkyOt+kSZO47LLLkhFZRCR5XWfLOsu6++bg+d1Aqbs/UGG+zkTafPSsuI4K8x2UXWd7dWxDUVER119/PY888gjdu3fnkUceoWXLlgwfPhyAadOmUVRUxJgxY6L3cUiWTO+8mcn5Mzk7KH/Y6tt1NmPafbj7E8ATAMdmdfXxyzImejk399pHbbIXD80jOzubsWPHRvsbNW7cmHHjxpGXl8fTTz/N+++/z2uvvUaLFi2SFTuqoKCAvLy8pL9OsmRy/kzODsqf6TLyE7d508YUjat0VCsjFBQUUDw0r1bLHHXUUXTq1ImioiJOPPFEXnvtNbp3784rr7zC/fffz7x581JSKETk4JWRxeJg9MgjjzB06FD27NlDVlYWkydP5tRTT2X37t3k5+cDkZPcZd1WRUQaUtKLhZkdBSwCWgP7zewmoLu7f2FmzwJ5QDszWwf80t2fSnamTJSbm8uiRYvKjVu9enVIaUTkYJO0YlGhs+wx1cxzRbJeX0REGo6u4BYRkbhULEREJC4VCxERiUvFQkRE4lKxEBGRuFQsREQkLhULERGJS8VCRETiUrEQEZG4ktaiPJnMbDtQFHaOOmoHbA47RD0of3gyOTsof9hOdPfD6rpwpjYSLKpPX/YwmdmiTM0Oyh+mTM4Oyh82M1sUf67q6TCUiIjEpWIhIiJxZWqxeCLsAPWQydlB+cOUydlB+cNWr/wZeYJbRERSK1P3LEREJIVULEREJK6MKhZmdq6ZFZnZajO7Lew8iTCzYjNbZmaFZV9dM7O2Zvaqma0K/v1a2DnLmNkkM9tkZstjxlWZ1yJ+F/x/LDWzU8JLXm32u81sfbD9C83s/JhptwfZi8zsnHBSf8XMOpnZXDNbYWbvm9mNwfi03/41ZM+I7W9mh5rZQjNbEuS/JxjfxczeDnLOMLNmwfhDguerg+md0zT/02a2Jmb75wbja/+z4+4Z8QAaA/8HZAHNgCVE7uUderY4uYuBdhXG3Q/cFgzfBvw67Jwx2foDpwDL4+UFzgdeBgzoB7ydhtnvBkZVMW/34GfoEKBL8LPVOOT8HYBTguHDgA+DnGm//WvInhHbP9iGrYLhpsDbwTZ9Drg8GP84cF0wfD3weDB8OTAj5J+d6vI/DVxaxfy1/tnJpD2L04DV7v5vd98D/BG4KORMdXUR8Eww/AxwcXhRynP3+cDnFUZXl/ciYIpHLAAON7MOKQlahWqyV+ci4I/uvtvd1wCrifyMhcbdN7j74mB4O7AS6EgGbP8aslcnrbZ/sA1Lg6dNg4cD3wSeD8ZX3PZl/yfPA2ebmaUmbWU15K9OrX92MqlYdAQ+jnm+jpp/GNOFA/8ws3fN7L+Dce3dfUMw/CnQPpxoCasub6b8n/w02NWeFHPIL62zB4c1TibyF2JGbf8K2SFDtr+ZNTazQmAT8CqRvZ0Sd98XzBKbMZo/mL4N+HpKA1dQMb+7l23/e4Pt/6CZHRKMq/X2z6RikanOcvdTgPOAn5hZ/9iJHtknzJjvL2daXuD/AccDucAGYHyoaRJgZq2AF4Cb3P2L2Gnpvv2ryJ4x29/dv3T3XOAYIns52eEmqp2K+c2sJ3A7kfdxKtAWuLWu68+kYrEe6BTz/JhgXFpz9/XBv5uAmUR+CDeW7fIF/24KL2FCqsub9v8n7r4x+CXaDzzJV4c60jK7mTUl8mE73d1fDEZnxPavKnumbX8Ady8B5gJnEDk8U9ZDLzZjNH8wvQ2wJbVJqxaT/9zg8KC7+25gMvXY/plULN4BTgi+ndCMyEmll0LOVCMza2lmh5UNA4OA5URy/zCY7YfArHASJqy6vC8BVwXfrOgHbIs5XJIWKhyHHUJk+0Mk++XBt1q6ACcAC1OdL1ZwzPspYKW7/zZmUtpv/+qyZ8r2N7MjzOzwYLg5kE/kvMtc4NJgtorbvuz/5FJgTrDXF4pq8n8Q80eGETnfErv9a/ezE+YZ/No+iJzB/5DIscQ7ws6TQN4sIt/4WAK8X5aZyLHN14BVwD+BtmFnjcn8LJHDBXuJHMe8prq8RL5J8Wjw/7EM6JuG2acG2ZYGvyAdYua/I8heBJyXBtv+LCKHmJYChcHj/EzY/jVkz4jtD+QA7wU5lwN3BeOziBSx1cCfgEOC8YcGz1cH07PSNP+cYPsvB6bx1Temav2zo3YfIiISVyYdhhIRkZCoWIiISFwqFiIiEpeKhYiIxKViISIicTWJP4vIwcHMviTyNcIyF7t7cUhxRNKKvjorEjCzUndvlcLXa+Jf9R0SSWs6DCWSIDPrYGbzg/sCLDez/wrGn2tmi4N7CbwWjGtrZn8OGrgtMLOcYPzdZjbVzN4EpgZX3r5gZu8EjzNDfIsi1dJhKJGvNA+6dgKscfchFaZ/H/i7u99rZo2BFmZ2BJGeR/3dfY2ZtQ3mvQd4z90vNrNvAlOINNODyL0cznL3nWb2B+BBd3/DzI4F/g6clLR3KFJHKhYiX9npka6d1XkHmBQ0zPuzuxeaWR4w3yP3ZMDdy+6ncRZwSTBujpl93cxaB9NecvedwfC3gO4xt0JobWat/Kt7E4ikBRULkQS5+/ygxfwFwNNm9ltgax1WtSNmuBHQz913NURGkWTROQuRBJnZccBGd38SmEjkFq4LgP5B51RiDkO9DgwNxuUBm73CvSkC/wBuiHmN3CTFF6kX7VmIJC4PGG1me4FS4Cp3/yy4A+KLZtaIyL0m8once3qSmS0F/sNX7awrGgk8GszXBJgPXJvUdyFSB/rqrIiIxKXDUCIiEpeKhYiIxKViISIicalYiIhIXCoWIiISl4qFiIjEpWIhIiJx/X+H7WEVwZAWqwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "xgb.plot_importance(bst_tuned)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "As a final note remember that hyperparameter tuning is more of an art than science. It is possible to obtain better results than what has been obtained here by choosing better set of hyperparameters.\n",
    "\n",
    "For other reproducible results on RUL, interested readers can visit my [project page](https://biswajitsahoo1111.github.io/rul_codes_open). "
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "tf_cpu_23",
   "language": "python",
   "name": "tf_cpu_23"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
